﻿using System;
using Wise.TimeWarrior.DTO;
using Wise.TimeWarrior.Interfaces;
using Wise.TimeWarrior.OSFunctionalitiesProxy;

namespace Wise.TimeWarrior.Business
{
    /// <summary>
    /// Method represents user loggin business logic
    /// </summary>
    public interface IUserLoggingBusinessLogic : IDisposable, IBLSetup
    {
        /// <summary>
        /// <see cref="IDataStore"/>
        /// </summary>
        IDataStore DataStoreService { set; }
        /// <summary>
        /// <see cref="ISystemUsage"/>
        /// </summary>
        ISystemUsage SystemUsageService { set; }
        /// <summary>
        /// <see cref="ISystemTimer"/>
        /// </summary>
        ISystemTimer SystemTimer { set; }
        /// <summary>
        /// <see cref="IDateTimeProvider"/>
        /// </summary>
        IDateTimeProvider DateTimeProvider { set; }
        /// <summary>
        /// time Interval between next tries of save statistics data 
        /// </summary>
        double CheckInterval { set; }
        /// <summary>
        /// <see cref="IConfiguration"/>
        /// </summary>
        IConfiguration Configuration { set; }
        /// <summary>
        /// Data Colection Functionality
        /// </summary>
        /// <returns>data colection business logic</returns>
        BusinessItemDto CollectData();
    }
}
